package co.edu.unal.research.contentprovider.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import co.edu.unal.research.contentprovider.services.ContentProviderDslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalContentProviderDslParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'configuration'", "'{'", "'authority'", "'base_path'", "'package'", "'}'", "'table'", "'primary key'", "'('", "')'", "'column'", "':'", "'type'", "'integer'", "'real'", "'text'", "'blob'"
    };
    public static final int RULE_ID=5;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__19=19;
    public static final int RULE_STRING=4;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=6;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalContentProviderDslParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalContentProviderDslParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalContentProviderDslParser.tokenNames; }
    public String getGrammarFileName() { return "../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g"; }



     	private ContentProviderDslGrammarAccess grammarAccess;
     	
        public InternalContentProviderDslParser(TokenStream input, ContentProviderDslGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "ContentProvider";	
       	}
       	
       	@Override
       	protected ContentProviderDslGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleContentProvider"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:67:1: entryRuleContentProvider returns [EObject current=null] : iv_ruleContentProvider= ruleContentProvider EOF ;
    public final EObject entryRuleContentProvider() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleContentProvider = null;


        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:68:2: (iv_ruleContentProvider= ruleContentProvider EOF )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:69:2: iv_ruleContentProvider= ruleContentProvider EOF
            {
             newCompositeNode(grammarAccess.getContentProviderRule()); 
            pushFollow(FOLLOW_ruleContentProvider_in_entryRuleContentProvider75);
            iv_ruleContentProvider=ruleContentProvider();

            state._fsp--;

             current =iv_ruleContentProvider; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleContentProvider85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleContentProvider"


    // $ANTLR start "ruleContentProvider"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:76:1: ruleContentProvider returns [EObject current=null] : ( ( (lv_config_0_0= ruleConfiguration ) ) ( (lv_tables_1_0= ruleTable ) )+ ) ;
    public final EObject ruleContentProvider() throws RecognitionException {
        EObject current = null;

        EObject lv_config_0_0 = null;

        EObject lv_tables_1_0 = null;


         enterRule(); 
            
        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:79:28: ( ( ( (lv_config_0_0= ruleConfiguration ) ) ( (lv_tables_1_0= ruleTable ) )+ ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:80:1: ( ( (lv_config_0_0= ruleConfiguration ) ) ( (lv_tables_1_0= ruleTable ) )+ )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:80:1: ( ( (lv_config_0_0= ruleConfiguration ) ) ( (lv_tables_1_0= ruleTable ) )+ )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:80:2: ( (lv_config_0_0= ruleConfiguration ) ) ( (lv_tables_1_0= ruleTable ) )+
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:80:2: ( (lv_config_0_0= ruleConfiguration ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:81:1: (lv_config_0_0= ruleConfiguration )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:81:1: (lv_config_0_0= ruleConfiguration )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:82:3: lv_config_0_0= ruleConfiguration
            {
             
            	        newCompositeNode(grammarAccess.getContentProviderAccess().getConfigConfigurationParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleConfiguration_in_ruleContentProvider131);
            lv_config_0_0=ruleConfiguration();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getContentProviderRule());
            	        }
                   		add(
                   			current, 
                   			"config",
                    		lv_config_0_0, 
                    		"Configuration");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:98:2: ( (lv_tables_1_0= ruleTable ) )+
            int cnt1=0;
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==17) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:99:1: (lv_tables_1_0= ruleTable )
            	    {
            	    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:99:1: (lv_tables_1_0= ruleTable )
            	    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:100:3: lv_tables_1_0= ruleTable
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getContentProviderAccess().getTablesTableParserRuleCall_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleTable_in_ruleContentProvider152);
            	    lv_tables_1_0=ruleTable();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getContentProviderRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"tables",
            	            		lv_tables_1_0, 
            	            		"Table");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt1 >= 1 ) break loop1;
                        EarlyExitException eee =
                            new EarlyExitException(1, input);
                        throw eee;
                }
                cnt1++;
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleContentProvider"


    // $ANTLR start "entryRuleConfiguration"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:124:1: entryRuleConfiguration returns [EObject current=null] : iv_ruleConfiguration= ruleConfiguration EOF ;
    public final EObject entryRuleConfiguration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConfiguration = null;


        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:125:2: (iv_ruleConfiguration= ruleConfiguration EOF )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:126:2: iv_ruleConfiguration= ruleConfiguration EOF
            {
             newCompositeNode(grammarAccess.getConfigurationRule()); 
            pushFollow(FOLLOW_ruleConfiguration_in_entryRuleConfiguration189);
            iv_ruleConfiguration=ruleConfiguration();

            state._fsp--;

             current =iv_ruleConfiguration; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleConfiguration199); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConfiguration"


    // $ANTLR start "ruleConfiguration"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:133:1: ruleConfiguration returns [EObject current=null] : (otherlv_0= 'configuration' otherlv_1= '{' otherlv_2= 'authority' ( (lv_authority_3_0= RULE_STRING ) ) otherlv_4= 'base_path' ( (lv_basePath_5_0= RULE_STRING ) ) otherlv_6= 'package' ( (lv_packageName_7_0= RULE_STRING ) ) otherlv_8= '}' ) ;
    public final EObject ruleConfiguration() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token lv_authority_3_0=null;
        Token otherlv_4=null;
        Token lv_basePath_5_0=null;
        Token otherlv_6=null;
        Token lv_packageName_7_0=null;
        Token otherlv_8=null;

         enterRule(); 
            
        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:136:28: ( (otherlv_0= 'configuration' otherlv_1= '{' otherlv_2= 'authority' ( (lv_authority_3_0= RULE_STRING ) ) otherlv_4= 'base_path' ( (lv_basePath_5_0= RULE_STRING ) ) otherlv_6= 'package' ( (lv_packageName_7_0= RULE_STRING ) ) otherlv_8= '}' ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:137:1: (otherlv_0= 'configuration' otherlv_1= '{' otherlv_2= 'authority' ( (lv_authority_3_0= RULE_STRING ) ) otherlv_4= 'base_path' ( (lv_basePath_5_0= RULE_STRING ) ) otherlv_6= 'package' ( (lv_packageName_7_0= RULE_STRING ) ) otherlv_8= '}' )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:137:1: (otherlv_0= 'configuration' otherlv_1= '{' otherlv_2= 'authority' ( (lv_authority_3_0= RULE_STRING ) ) otherlv_4= 'base_path' ( (lv_basePath_5_0= RULE_STRING ) ) otherlv_6= 'package' ( (lv_packageName_7_0= RULE_STRING ) ) otherlv_8= '}' )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:137:3: otherlv_0= 'configuration' otherlv_1= '{' otherlv_2= 'authority' ( (lv_authority_3_0= RULE_STRING ) ) otherlv_4= 'base_path' ( (lv_basePath_5_0= RULE_STRING ) ) otherlv_6= 'package' ( (lv_packageName_7_0= RULE_STRING ) ) otherlv_8= '}'
            {
            otherlv_0=(Token)match(input,11,FOLLOW_11_in_ruleConfiguration236); 

                	newLeafNode(otherlv_0, grammarAccess.getConfigurationAccess().getConfigurationKeyword_0());
                
            otherlv_1=(Token)match(input,12,FOLLOW_12_in_ruleConfiguration248); 

                	newLeafNode(otherlv_1, grammarAccess.getConfigurationAccess().getLeftCurlyBracketKeyword_1());
                
            otherlv_2=(Token)match(input,13,FOLLOW_13_in_ruleConfiguration260); 

                	newLeafNode(otherlv_2, grammarAccess.getConfigurationAccess().getAuthorityKeyword_2());
                
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:149:1: ( (lv_authority_3_0= RULE_STRING ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:150:1: (lv_authority_3_0= RULE_STRING )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:150:1: (lv_authority_3_0= RULE_STRING )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:151:3: lv_authority_3_0= RULE_STRING
            {
            lv_authority_3_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConfiguration277); 

            			newLeafNode(lv_authority_3_0, grammarAccess.getConfigurationAccess().getAuthoritySTRINGTerminalRuleCall_3_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getConfigurationRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"authority",
                    		lv_authority_3_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_4=(Token)match(input,14,FOLLOW_14_in_ruleConfiguration294); 

                	newLeafNode(otherlv_4, grammarAccess.getConfigurationAccess().getBase_pathKeyword_4());
                
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:171:1: ( (lv_basePath_5_0= RULE_STRING ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:172:1: (lv_basePath_5_0= RULE_STRING )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:172:1: (lv_basePath_5_0= RULE_STRING )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:173:3: lv_basePath_5_0= RULE_STRING
            {
            lv_basePath_5_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConfiguration311); 

            			newLeafNode(lv_basePath_5_0, grammarAccess.getConfigurationAccess().getBasePathSTRINGTerminalRuleCall_5_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getConfigurationRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"basePath",
                    		lv_basePath_5_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleConfiguration328); 

                	newLeafNode(otherlv_6, grammarAccess.getConfigurationAccess().getPackageKeyword_6());
                
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:193:1: ( (lv_packageName_7_0= RULE_STRING ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:194:1: (lv_packageName_7_0= RULE_STRING )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:194:1: (lv_packageName_7_0= RULE_STRING )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:195:3: lv_packageName_7_0= RULE_STRING
            {
            lv_packageName_7_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleConfiguration345); 

            			newLeafNode(lv_packageName_7_0, grammarAccess.getConfigurationAccess().getPackageNameSTRINGTerminalRuleCall_7_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getConfigurationRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"packageName",
                    		lv_packageName_7_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_8=(Token)match(input,16,FOLLOW_16_in_ruleConfiguration362); 

                	newLeafNode(otherlv_8, grammarAccess.getConfigurationAccess().getRightCurlyBracketKeyword_8());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConfiguration"


    // $ANTLR start "entryRuleTable"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:223:1: entryRuleTable returns [EObject current=null] : iv_ruleTable= ruleTable EOF ;
    public final EObject entryRuleTable() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTable = null;


        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:224:2: (iv_ruleTable= ruleTable EOF )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:225:2: iv_ruleTable= ruleTable EOF
            {
             newCompositeNode(grammarAccess.getTableRule()); 
            pushFollow(FOLLOW_ruleTable_in_entryRuleTable398);
            iv_ruleTable=ruleTable();

            state._fsp--;

             current =iv_ruleTable; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTable408); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTable"


    // $ANTLR start "ruleTable"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:232:1: ruleTable returns [EObject current=null] : (otherlv_0= 'table' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_columns_3_0= ruleTableColumn ) )+ (otherlv_4= 'primary key' otherlv_5= '(' ( (lv_primaryKey_6_0= RULE_STRING ) ) otherlv_7= ')' )? otherlv_8= '}' ) ;
    public final EObject ruleTable() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token lv_primaryKey_6_0=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        EObject lv_columns_3_0 = null;


         enterRule(); 
            
        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:235:28: ( (otherlv_0= 'table' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_columns_3_0= ruleTableColumn ) )+ (otherlv_4= 'primary key' otherlv_5= '(' ( (lv_primaryKey_6_0= RULE_STRING ) ) otherlv_7= ')' )? otherlv_8= '}' ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:236:1: (otherlv_0= 'table' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_columns_3_0= ruleTableColumn ) )+ (otherlv_4= 'primary key' otherlv_5= '(' ( (lv_primaryKey_6_0= RULE_STRING ) ) otherlv_7= ')' )? otherlv_8= '}' )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:236:1: (otherlv_0= 'table' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_columns_3_0= ruleTableColumn ) )+ (otherlv_4= 'primary key' otherlv_5= '(' ( (lv_primaryKey_6_0= RULE_STRING ) ) otherlv_7= ')' )? otherlv_8= '}' )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:236:3: otherlv_0= 'table' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_columns_3_0= ruleTableColumn ) )+ (otherlv_4= 'primary key' otherlv_5= '(' ( (lv_primaryKey_6_0= RULE_STRING ) ) otherlv_7= ')' )? otherlv_8= '}'
            {
            otherlv_0=(Token)match(input,17,FOLLOW_17_in_ruleTable445); 

                	newLeafNode(otherlv_0, grammarAccess.getTableAccess().getTableKeyword_0());
                
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:240:1: ( (lv_name_1_0= RULE_ID ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:241:1: (lv_name_1_0= RULE_ID )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:241:1: (lv_name_1_0= RULE_ID )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:242:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTable462); 

            			newLeafNode(lv_name_1_0, grammarAccess.getTableAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getTableRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleTable479); 

                	newLeafNode(otherlv_2, grammarAccess.getTableAccess().getLeftCurlyBracketKeyword_2());
                
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:262:1: ( (lv_columns_3_0= ruleTableColumn ) )+
            int cnt2=0;
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==21) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:263:1: (lv_columns_3_0= ruleTableColumn )
            	    {
            	    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:263:1: (lv_columns_3_0= ruleTableColumn )
            	    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:264:3: lv_columns_3_0= ruleTableColumn
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getTableAccess().getColumnsTableColumnParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleTableColumn_in_ruleTable500);
            	    lv_columns_3_0=ruleTableColumn();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getTableRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"columns",
            	            		lv_columns_3_0, 
            	            		"TableColumn");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt2 >= 1 ) break loop2;
                        EarlyExitException eee =
                            new EarlyExitException(2, input);
                        throw eee;
                }
                cnt2++;
            } while (true);

            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:280:3: (otherlv_4= 'primary key' otherlv_5= '(' ( (lv_primaryKey_6_0= RULE_STRING ) ) otherlv_7= ')' )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==18) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:280:5: otherlv_4= 'primary key' otherlv_5= '(' ( (lv_primaryKey_6_0= RULE_STRING ) ) otherlv_7= ')'
                    {
                    otherlv_4=(Token)match(input,18,FOLLOW_18_in_ruleTable514); 

                        	newLeafNode(otherlv_4, grammarAccess.getTableAccess().getPrimaryKeyKeyword_4_0());
                        
                    otherlv_5=(Token)match(input,19,FOLLOW_19_in_ruleTable526); 

                        	newLeafNode(otherlv_5, grammarAccess.getTableAccess().getLeftParenthesisKeyword_4_1());
                        
                    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:288:1: ( (lv_primaryKey_6_0= RULE_STRING ) )
                    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:289:1: (lv_primaryKey_6_0= RULE_STRING )
                    {
                    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:289:1: (lv_primaryKey_6_0= RULE_STRING )
                    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:290:3: lv_primaryKey_6_0= RULE_STRING
                    {
                    lv_primaryKey_6_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTable543); 

                    			newLeafNode(lv_primaryKey_6_0, grammarAccess.getTableAccess().getPrimaryKeySTRINGTerminalRuleCall_4_2_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getTableRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"primaryKey",
                            		lv_primaryKey_6_0, 
                            		"STRING");
                    	    

                    }


                    }

                    otherlv_7=(Token)match(input,20,FOLLOW_20_in_ruleTable560); 

                        	newLeafNode(otherlv_7, grammarAccess.getTableAccess().getRightParenthesisKeyword_4_3());
                        

                    }
                    break;

            }

            otherlv_8=(Token)match(input,16,FOLLOW_16_in_ruleTable574); 

                	newLeafNode(otherlv_8, grammarAccess.getTableAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTable"


    // $ANTLR start "entryRuleTableColumn"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:322:1: entryRuleTableColumn returns [EObject current=null] : iv_ruleTableColumn= ruleTableColumn EOF ;
    public final EObject entryRuleTableColumn() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTableColumn = null;


        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:323:2: (iv_ruleTableColumn= ruleTableColumn EOF )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:324:2: iv_ruleTableColumn= ruleTableColumn EOF
            {
             newCompositeNode(grammarAccess.getTableColumnRule()); 
            pushFollow(FOLLOW_ruleTableColumn_in_entryRuleTableColumn610);
            iv_ruleTableColumn=ruleTableColumn();

            state._fsp--;

             current =iv_ruleTableColumn; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTableColumn620); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTableColumn"


    // $ANTLR start "ruleTableColumn"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:331:1: ruleTableColumn returns [EObject current=null] : (otherlv_0= 'column' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' otherlv_3= 'type' ( (lv_type_4_0= ruleColumnType ) ) ( (lv_additionalFeatures_5_0= ruleAdditionalFeature ) )* ) ;
    public final EObject ruleTableColumn() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        EObject lv_type_4_0 = null;

        EObject lv_additionalFeatures_5_0 = null;


         enterRule(); 
            
        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:334:28: ( (otherlv_0= 'column' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' otherlv_3= 'type' ( (lv_type_4_0= ruleColumnType ) ) ( (lv_additionalFeatures_5_0= ruleAdditionalFeature ) )* ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:335:1: (otherlv_0= 'column' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' otherlv_3= 'type' ( (lv_type_4_0= ruleColumnType ) ) ( (lv_additionalFeatures_5_0= ruleAdditionalFeature ) )* )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:335:1: (otherlv_0= 'column' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' otherlv_3= 'type' ( (lv_type_4_0= ruleColumnType ) ) ( (lv_additionalFeatures_5_0= ruleAdditionalFeature ) )* )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:335:3: otherlv_0= 'column' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' otherlv_3= 'type' ( (lv_type_4_0= ruleColumnType ) ) ( (lv_additionalFeatures_5_0= ruleAdditionalFeature ) )*
            {
            otherlv_0=(Token)match(input,21,FOLLOW_21_in_ruleTableColumn657); 

                	newLeafNode(otherlv_0, grammarAccess.getTableColumnAccess().getColumnKeyword_0());
                
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:339:1: ( (lv_name_1_0= RULE_ID ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:340:1: (lv_name_1_0= RULE_ID )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:340:1: (lv_name_1_0= RULE_ID )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:341:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTableColumn674); 

            			newLeafNode(lv_name_1_0, grammarAccess.getTableColumnAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getTableColumnRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,22,FOLLOW_22_in_ruleTableColumn691); 

                	newLeafNode(otherlv_2, grammarAccess.getTableColumnAccess().getColonKeyword_2());
                
            otherlv_3=(Token)match(input,23,FOLLOW_23_in_ruleTableColumn703); 

                	newLeafNode(otherlv_3, grammarAccess.getTableColumnAccess().getTypeKeyword_3());
                
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:365:1: ( (lv_type_4_0= ruleColumnType ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:366:1: (lv_type_4_0= ruleColumnType )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:366:1: (lv_type_4_0= ruleColumnType )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:367:3: lv_type_4_0= ruleColumnType
            {
             
            	        newCompositeNode(grammarAccess.getTableColumnAccess().getTypeColumnTypeParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleColumnType_in_ruleTableColumn724);
            lv_type_4_0=ruleColumnType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getTableColumnRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_4_0, 
                    		"ColumnType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:383:2: ( (lv_additionalFeatures_5_0= ruleAdditionalFeature ) )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( (LA4_0==RULE_STRING) ) {
                    alt4=1;
                }


                switch (alt4) {
            	case 1 :
            	    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:384:1: (lv_additionalFeatures_5_0= ruleAdditionalFeature )
            	    {
            	    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:384:1: (lv_additionalFeatures_5_0= ruleAdditionalFeature )
            	    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:385:3: lv_additionalFeatures_5_0= ruleAdditionalFeature
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getTableColumnAccess().getAdditionalFeaturesAdditionalFeatureParserRuleCall_5_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAdditionalFeature_in_ruleTableColumn745);
            	    lv_additionalFeatures_5_0=ruleAdditionalFeature();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getTableColumnRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"additionalFeatures",
            	            		lv_additionalFeatures_5_0, 
            	            		"AdditionalFeature");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTableColumn"


    // $ANTLR start "entryRuleAdditionalFeature"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:409:1: entryRuleAdditionalFeature returns [EObject current=null] : iv_ruleAdditionalFeature= ruleAdditionalFeature EOF ;
    public final EObject entryRuleAdditionalFeature() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAdditionalFeature = null;


        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:410:2: (iv_ruleAdditionalFeature= ruleAdditionalFeature EOF )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:411:2: iv_ruleAdditionalFeature= ruleAdditionalFeature EOF
            {
             newCompositeNode(grammarAccess.getAdditionalFeatureRule()); 
            pushFollow(FOLLOW_ruleAdditionalFeature_in_entryRuleAdditionalFeature782);
            iv_ruleAdditionalFeature=ruleAdditionalFeature();

            state._fsp--;

             current =iv_ruleAdditionalFeature; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAdditionalFeature792); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAdditionalFeature"


    // $ANTLR start "ruleAdditionalFeature"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:418:1: ruleAdditionalFeature returns [EObject current=null] : ( (lv_name_0_0= RULE_STRING ) ) ;
    public final EObject ruleAdditionalFeature() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;

         enterRule(); 
            
        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:421:28: ( ( (lv_name_0_0= RULE_STRING ) ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:422:1: ( (lv_name_0_0= RULE_STRING ) )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:422:1: ( (lv_name_0_0= RULE_STRING ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:423:1: (lv_name_0_0= RULE_STRING )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:423:1: (lv_name_0_0= RULE_STRING )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:424:3: lv_name_0_0= RULE_STRING
            {
            lv_name_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleAdditionalFeature833); 

            			newLeafNode(lv_name_0_0, grammarAccess.getAdditionalFeatureAccess().getNameSTRINGTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getAdditionalFeatureRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"STRING");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAdditionalFeature"


    // $ANTLR start "entryRuleColumnType"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:448:1: entryRuleColumnType returns [EObject current=null] : iv_ruleColumnType= ruleColumnType EOF ;
    public final EObject entryRuleColumnType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleColumnType = null;


        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:449:2: (iv_ruleColumnType= ruleColumnType EOF )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:450:2: iv_ruleColumnType= ruleColumnType EOF
            {
             newCompositeNode(grammarAccess.getColumnTypeRule()); 
            pushFollow(FOLLOW_ruleColumnType_in_entryRuleColumnType873);
            iv_ruleColumnType=ruleColumnType();

            state._fsp--;

             current =iv_ruleColumnType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleColumnType883); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleColumnType"


    // $ANTLR start "ruleColumnType"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:457:1: ruleColumnType returns [EObject current=null] : ( ( (lv_type_0_0= ruleDataType ) ) | this_TableWrap_1= ruleTableWrap ) ;
    public final EObject ruleColumnType() throws RecognitionException {
        EObject current = null;

        EObject lv_type_0_0 = null;

        EObject this_TableWrap_1 = null;


         enterRule(); 
            
        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:460:28: ( ( ( (lv_type_0_0= ruleDataType ) ) | this_TableWrap_1= ruleTableWrap ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:461:1: ( ( (lv_type_0_0= ruleDataType ) ) | this_TableWrap_1= ruleTableWrap )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:461:1: ( ( (lv_type_0_0= ruleDataType ) ) | this_TableWrap_1= ruleTableWrap )
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==17||(LA5_0>=24 && LA5_0<=27)) ) {
                alt5=1;
            }
            else if ( (LA5_0==RULE_ID) ) {
                alt5=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;
            }
            switch (alt5) {
                case 1 :
                    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:461:2: ( (lv_type_0_0= ruleDataType ) )
                    {
                    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:461:2: ( (lv_type_0_0= ruleDataType ) )
                    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:462:1: (lv_type_0_0= ruleDataType )
                    {
                    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:462:1: (lv_type_0_0= ruleDataType )
                    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:463:3: lv_type_0_0= ruleDataType
                    {
                     
                    	        newCompositeNode(grammarAccess.getColumnTypeAccess().getTypeDataTypeParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleDataType_in_ruleColumnType929);
                    lv_type_0_0=ruleDataType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getColumnTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"type",
                            		lv_type_0_0, 
                            		"DataType");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:481:5: this_TableWrap_1= ruleTableWrap
                    {
                     
                            newCompositeNode(grammarAccess.getColumnTypeAccess().getTableWrapParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleTableWrap_in_ruleColumnType957);
                    this_TableWrap_1=ruleTableWrap();

                    state._fsp--;

                     
                            current = this_TableWrap_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleColumnType"


    // $ANTLR start "entryRuleTableWrap"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:497:1: entryRuleTableWrap returns [EObject current=null] : iv_ruleTableWrap= ruleTableWrap EOF ;
    public final EObject entryRuleTableWrap() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTableWrap = null;


        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:498:2: (iv_ruleTableWrap= ruleTableWrap EOF )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:499:2: iv_ruleTableWrap= ruleTableWrap EOF
            {
             newCompositeNode(grammarAccess.getTableWrapRule()); 
            pushFollow(FOLLOW_ruleTableWrap_in_entryRuleTableWrap992);
            iv_ruleTableWrap=ruleTableWrap();

            state._fsp--;

             current =iv_ruleTableWrap; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTableWrap1002); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTableWrap"


    // $ANTLR start "ruleTableWrap"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:506:1: ruleTableWrap returns [EObject current=null] : ( (otherlv_0= RULE_ID ) ) ;
    public final EObject ruleTableWrap() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;

         enterRule(); 
            
        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:509:28: ( ( (otherlv_0= RULE_ID ) ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:510:1: ( (otherlv_0= RULE_ID ) )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:510:1: ( (otherlv_0= RULE_ID ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:511:1: (otherlv_0= RULE_ID )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:511:1: (otherlv_0= RULE_ID )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:512:3: otherlv_0= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getTableWrapRule());
            	        }
                    
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTableWrap1046); 

            		newLeafNode(otherlv_0, grammarAccess.getTableWrapAccess().getTableTableCrossReference_0()); 
            	

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTableWrap"


    // $ANTLR start "entryRuleDataType"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:531:1: entryRuleDataType returns [EObject current=null] : iv_ruleDataType= ruleDataType EOF ;
    public final EObject entryRuleDataType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDataType = null;


        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:532:2: (iv_ruleDataType= ruleDataType EOF )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:533:2: iv_ruleDataType= ruleDataType EOF
            {
             newCompositeNode(grammarAccess.getDataTypeRule()); 
            pushFollow(FOLLOW_ruleDataType_in_entryRuleDataType1081);
            iv_ruleDataType=ruleDataType();

            state._fsp--;

             current =iv_ruleDataType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDataType1091); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDataType"


    // $ANTLR start "ruleDataType"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:540:1: ruleDataType returns [EObject current=null] : (this_IntegerDataType_0= ruleIntegerDataType | this_RealDataType_1= ruleRealDataType | this_TextDataType_2= ruleTextDataType | this_BlobDataType_3= ruleBlobDataType | this_Table_4= ruleTable ) ;
    public final EObject ruleDataType() throws RecognitionException {
        EObject current = null;

        EObject this_IntegerDataType_0 = null;

        EObject this_RealDataType_1 = null;

        EObject this_TextDataType_2 = null;

        EObject this_BlobDataType_3 = null;

        EObject this_Table_4 = null;


         enterRule(); 
            
        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:543:28: ( (this_IntegerDataType_0= ruleIntegerDataType | this_RealDataType_1= ruleRealDataType | this_TextDataType_2= ruleTextDataType | this_BlobDataType_3= ruleBlobDataType | this_Table_4= ruleTable ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:544:1: (this_IntegerDataType_0= ruleIntegerDataType | this_RealDataType_1= ruleRealDataType | this_TextDataType_2= ruleTextDataType | this_BlobDataType_3= ruleBlobDataType | this_Table_4= ruleTable )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:544:1: (this_IntegerDataType_0= ruleIntegerDataType | this_RealDataType_1= ruleRealDataType | this_TextDataType_2= ruleTextDataType | this_BlobDataType_3= ruleBlobDataType | this_Table_4= ruleTable )
            int alt6=5;
            switch ( input.LA(1) ) {
            case 24:
                {
                alt6=1;
                }
                break;
            case 25:
                {
                alt6=2;
                }
                break;
            case 26:
                {
                alt6=3;
                }
                break;
            case 27:
                {
                alt6=4;
                }
                break;
            case 17:
                {
                alt6=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 6, 0, input);

                throw nvae;
            }

            switch (alt6) {
                case 1 :
                    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:545:5: this_IntegerDataType_0= ruleIntegerDataType
                    {
                     
                            newCompositeNode(grammarAccess.getDataTypeAccess().getIntegerDataTypeParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleIntegerDataType_in_ruleDataType1138);
                    this_IntegerDataType_0=ruleIntegerDataType();

                    state._fsp--;

                     
                            current = this_IntegerDataType_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:555:5: this_RealDataType_1= ruleRealDataType
                    {
                     
                            newCompositeNode(grammarAccess.getDataTypeAccess().getRealDataTypeParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleRealDataType_in_ruleDataType1165);
                    this_RealDataType_1=ruleRealDataType();

                    state._fsp--;

                     
                            current = this_RealDataType_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:565:5: this_TextDataType_2= ruleTextDataType
                    {
                     
                            newCompositeNode(grammarAccess.getDataTypeAccess().getTextDataTypeParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleTextDataType_in_ruleDataType1192);
                    this_TextDataType_2=ruleTextDataType();

                    state._fsp--;

                     
                            current = this_TextDataType_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:575:5: this_BlobDataType_3= ruleBlobDataType
                    {
                     
                            newCompositeNode(grammarAccess.getDataTypeAccess().getBlobDataTypeParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleBlobDataType_in_ruleDataType1219);
                    this_BlobDataType_3=ruleBlobDataType();

                    state._fsp--;

                     
                            current = this_BlobDataType_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 5 :
                    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:585:5: this_Table_4= ruleTable
                    {
                     
                            newCompositeNode(grammarAccess.getDataTypeAccess().getTableParserRuleCall_4()); 
                        
                    pushFollow(FOLLOW_ruleTable_in_ruleDataType1246);
                    this_Table_4=ruleTable();

                    state._fsp--;

                     
                            current = this_Table_4; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDataType"


    // $ANTLR start "entryRuleIntegerDataType"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:601:1: entryRuleIntegerDataType returns [EObject current=null] : iv_ruleIntegerDataType= ruleIntegerDataType EOF ;
    public final EObject entryRuleIntegerDataType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIntegerDataType = null;


        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:602:2: (iv_ruleIntegerDataType= ruleIntegerDataType EOF )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:603:2: iv_ruleIntegerDataType= ruleIntegerDataType EOF
            {
             newCompositeNode(grammarAccess.getIntegerDataTypeRule()); 
            pushFollow(FOLLOW_ruleIntegerDataType_in_entryRuleIntegerDataType1281);
            iv_ruleIntegerDataType=ruleIntegerDataType();

            state._fsp--;

             current =iv_ruleIntegerDataType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleIntegerDataType1291); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIntegerDataType"


    // $ANTLR start "ruleIntegerDataType"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:610:1: ruleIntegerDataType returns [EObject current=null] : ( () otherlv_1= 'integer' ) ;
    public final EObject ruleIntegerDataType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:613:28: ( ( () otherlv_1= 'integer' ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:614:1: ( () otherlv_1= 'integer' )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:614:1: ( () otherlv_1= 'integer' )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:614:2: () otherlv_1= 'integer'
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:614:2: ()
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:615:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getIntegerDataTypeAccess().getIntegerDataTypeAction_0(),
                        current);
                

            }

            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleIntegerDataType1337); 

                	newLeafNode(otherlv_1, grammarAccess.getIntegerDataTypeAccess().getIntegerKeyword_1());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIntegerDataType"


    // $ANTLR start "entryRuleRealDataType"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:632:1: entryRuleRealDataType returns [EObject current=null] : iv_ruleRealDataType= ruleRealDataType EOF ;
    public final EObject entryRuleRealDataType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRealDataType = null;


        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:633:2: (iv_ruleRealDataType= ruleRealDataType EOF )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:634:2: iv_ruleRealDataType= ruleRealDataType EOF
            {
             newCompositeNode(grammarAccess.getRealDataTypeRule()); 
            pushFollow(FOLLOW_ruleRealDataType_in_entryRuleRealDataType1373);
            iv_ruleRealDataType=ruleRealDataType();

            state._fsp--;

             current =iv_ruleRealDataType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRealDataType1383); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRealDataType"


    // $ANTLR start "ruleRealDataType"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:641:1: ruleRealDataType returns [EObject current=null] : ( () otherlv_1= 'real' ) ;
    public final EObject ruleRealDataType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:644:28: ( ( () otherlv_1= 'real' ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:645:1: ( () otherlv_1= 'real' )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:645:1: ( () otherlv_1= 'real' )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:645:2: () otherlv_1= 'real'
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:645:2: ()
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:646:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getRealDataTypeAccess().getRealDataTypeAction_0(),
                        current);
                

            }

            otherlv_1=(Token)match(input,25,FOLLOW_25_in_ruleRealDataType1429); 

                	newLeafNode(otherlv_1, grammarAccess.getRealDataTypeAccess().getRealKeyword_1());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRealDataType"


    // $ANTLR start "entryRuleTextDataType"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:663:1: entryRuleTextDataType returns [EObject current=null] : iv_ruleTextDataType= ruleTextDataType EOF ;
    public final EObject entryRuleTextDataType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTextDataType = null;


        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:664:2: (iv_ruleTextDataType= ruleTextDataType EOF )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:665:2: iv_ruleTextDataType= ruleTextDataType EOF
            {
             newCompositeNode(grammarAccess.getTextDataTypeRule()); 
            pushFollow(FOLLOW_ruleTextDataType_in_entryRuleTextDataType1465);
            iv_ruleTextDataType=ruleTextDataType();

            state._fsp--;

             current =iv_ruleTextDataType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTextDataType1475); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTextDataType"


    // $ANTLR start "ruleTextDataType"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:672:1: ruleTextDataType returns [EObject current=null] : ( () otherlv_1= 'text' ) ;
    public final EObject ruleTextDataType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:675:28: ( ( () otherlv_1= 'text' ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:676:1: ( () otherlv_1= 'text' )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:676:1: ( () otherlv_1= 'text' )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:676:2: () otherlv_1= 'text'
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:676:2: ()
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:677:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getTextDataTypeAccess().getTextDataTypeAction_0(),
                        current);
                

            }

            otherlv_1=(Token)match(input,26,FOLLOW_26_in_ruleTextDataType1521); 

                	newLeafNode(otherlv_1, grammarAccess.getTextDataTypeAccess().getTextKeyword_1());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTextDataType"


    // $ANTLR start "entryRuleBlobDataType"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:694:1: entryRuleBlobDataType returns [EObject current=null] : iv_ruleBlobDataType= ruleBlobDataType EOF ;
    public final EObject entryRuleBlobDataType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBlobDataType = null;


        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:695:2: (iv_ruleBlobDataType= ruleBlobDataType EOF )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:696:2: iv_ruleBlobDataType= ruleBlobDataType EOF
            {
             newCompositeNode(grammarAccess.getBlobDataTypeRule()); 
            pushFollow(FOLLOW_ruleBlobDataType_in_entryRuleBlobDataType1557);
            iv_ruleBlobDataType=ruleBlobDataType();

            state._fsp--;

             current =iv_ruleBlobDataType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBlobDataType1567); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBlobDataType"


    // $ANTLR start "ruleBlobDataType"
    // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:703:1: ruleBlobDataType returns [EObject current=null] : ( () otherlv_1= 'blob' ) ;
    public final EObject ruleBlobDataType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:706:28: ( ( () otherlv_1= 'blob' ) )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:707:1: ( () otherlv_1= 'blob' )
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:707:1: ( () otherlv_1= 'blob' )
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:707:2: () otherlv_1= 'blob'
            {
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:707:2: ()
            // ../co.edu.unal.research.contentprovider/src-gen/co/edu/unal/research/contentprovider/parser/antlr/internal/InternalContentProviderDsl.g:708:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getBlobDataTypeAccess().getBlobDataTypeAction_0(),
                        current);
                

            }

            otherlv_1=(Token)match(input,27,FOLLOW_27_in_ruleBlobDataType1613); 

                	newLeafNode(otherlv_1, grammarAccess.getBlobDataTypeAccess().getBlobKeyword_1());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBlobDataType"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleContentProvider_in_entryRuleContentProvider75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleContentProvider85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConfiguration_in_ruleContentProvider131 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_ruleTable_in_ruleContentProvider152 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_ruleConfiguration_in_entryRuleConfiguration189 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConfiguration199 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleConfiguration236 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleConfiguration248 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleConfiguration260 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConfiguration277 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleConfiguration294 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConfiguration311 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleConfiguration328 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleConfiguration345 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleConfiguration362 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTable_in_entryRuleTable398 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTable408 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_ruleTable445 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTable462 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleTable479 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_ruleTableColumn_in_ruleTable500 = new BitSet(new long[]{0x0000000000250000L});
    public static final BitSet FOLLOW_18_in_ruleTable514 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleTable526 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleTable543 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_20_in_ruleTable560 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleTable574 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTableColumn_in_entryRuleTableColumn610 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTableColumn620 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_ruleTableColumn657 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTableColumn674 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleTableColumn691 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleTableColumn703 = new BitSet(new long[]{0x000000000F020020L});
    public static final BitSet FOLLOW_ruleColumnType_in_ruleTableColumn724 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ruleAdditionalFeature_in_ruleTableColumn745 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ruleAdditionalFeature_in_entryRuleAdditionalFeature782 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAdditionalFeature792 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleAdditionalFeature833 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleColumnType_in_entryRuleColumnType873 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleColumnType883 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDataType_in_ruleColumnType929 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTableWrap_in_ruleColumnType957 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTableWrap_in_entryRuleTableWrap992 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTableWrap1002 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTableWrap1046 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDataType_in_entryRuleDataType1081 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDataType1091 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIntegerDataType_in_ruleDataType1138 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRealDataType_in_ruleDataType1165 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTextDataType_in_ruleDataType1192 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBlobDataType_in_ruleDataType1219 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTable_in_ruleDataType1246 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIntegerDataType_in_entryRuleIntegerDataType1281 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIntegerDataType1291 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_ruleIntegerDataType1337 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRealDataType_in_entryRuleRealDataType1373 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRealDataType1383 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_ruleRealDataType1429 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTextDataType_in_entryRuleTextDataType1465 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTextDataType1475 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_ruleTextDataType1521 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBlobDataType_in_entryRuleBlobDataType1557 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBlobDataType1567 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_ruleBlobDataType1613 = new BitSet(new long[]{0x0000000000000002L});

}